#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

// 算法
/*
编写一个函数，让它接受两个数组作为参数，判断第二个参数（sequence），是否是第一个参数（array）的子序列。
如果数组 B 是数组 A 的子序列，那么数组 B 中的元素都属于数组 A，并且，这些元素在 B 和 A 中的顺序相同。

array =    [5， 1， 22， 25， 6， -1， 8， 10]
sequence = [1, 6, -1, 10]
*/
bool isValidSubsequence(vector<int> array, vector<int> subsequence) {
  //
  auto arr_pos = array.begin();
  auto seq_pos = subsequence.begin();

  while (arr_pos != array.end()) {
    if (*arr_pos == *seq_pos) {
      ++seq_pos;
    }

    ++arr_pos;

    if (seq_pos == subsequence.end()) {
      return true;
    }
  }

  return false;
}

int main(int argc, char const *argv[])
{
  vector<int> v {5, 1, 22, 25, 6, -1, 8, 10};
  vector<int> seq {1, 6, -1, 11};

  cout<<isValidSubsequence(v, seq)<<endl;

  return 0;
}
